"""
1.新建一个ddt_data_file.txt,读数据,传入
2.新建ddt_data_file.csv
    1.新建一个excel文件，保存使选择csv类型
    2.直接在目录新建
    3.新建ddt_data_file.json
    4.新建ddt_data_file.yaml
        yaml：用来写配置文件的语言，可以作为自动化测试框架的配置文件或者用例文件
        规则：
            1.区分大小写
            2.使用缩进表示层级关系
            3.缩进不允许使用Tab，只能用空格
"""
import csv
import unittest, ddt
from a2022.unittest1.maths import *

# 从文件中读数据，把测试数据作为该方法的返回值
def readTXT():
    params = []
    file = open("ddt_data_file.txt", 'r', encoding='utf-8')
    for line in file.readlines():  # 读文件中的内容
        # strip('')移除字符串头尾指定的字符
        # split('')对字符串按照指定字符进行分隔，返回列表
        params.append(line.strip('\n').split(' '))
    return params


# 从csv读数据
def readCSV():
    value_rows = []
    with open('data.json', 'r', encoding='utf-8') as f:
        f_csv = csv.reader(f)
        for r in f_csv:
            value_rows.append(r)
    return value_rows




@ddt.ddt
class demo(unittest.TestCase):
    # 从TXT中读数据
    # @ddt.data(*readTXT())
    # @ddt.unpack
    # def test_data_file_1(self, value1, value2):
    #     print(value1 + " " + value2)
    #     self.assertEqual('1', value1)
    # 从csv读数据
    # @ddt.data(*readCSV())
    # @ddt.unpack
    # def test_data_file_2(self,x,y,exceptResult):
    #     print("读取csv文件")
    #     print("x={},y={},expectResult={}".format(x,y,exceptResult))
    #     x1 = eval(x)
    #     y1 = eval(y)
    #     e1 = eval(exceptResult)
    #     self.assertEqual(add(x,y),e1)
    # 从json读数据

    @ddt.file_data("ddt_data_file.json")
    def test_data_file_3(self, name, age):
        print(name, age)
        self.assertEqual(20, age)
    # 从yaml读数据
    # @ddt.file_data("ddt_data_file.yaml")
    # def test_data_file_4(self,case):
    #     nam = case[0]['nam']
    #     age = case[1]['age']
    #     self.assertEqual(20,age)

if __name__ == '__main__':
    unittest.main()
